package br.unipe.oitomaluco.controle;

import br.unipe.oitomaluco.beans.Carta;
import br.unipe.oitomaluco.beans.Jogador;
import br.unipe.oitomaluco.beans.Mesa;

public class Principal {

	public static void main(String[] args) {
		Mesa mesa = new Mesa();
		int opcao = 0, qtdeJogadores = 0;
		
		while (opcao != 2) {
			opcao = mesa.getView().opcaoDeSaida();
			switch (opcao) {
				case 1: {
					do {
						qtdeJogadores = mesa.getView().qtdeJogador();
						
						if (qtdeJogadores > 0 && qtdeJogadores <= 8) {
							mesa.getBaralho().calculaBaralhos(qtdeJogadores);
						}
						else {
							mesa.getView().warnningQtdeJogador();
						}
					}while (qtdeJogadores <= 0);
					
					mesa.inserirJogadores(qtdeJogadores);
					System.out.println("--------------------------------------------");				
					//System.out.println("Cartas Restantes: "+mesa.getBaralho().cartasEmDesuso().size());
					mesa.getBaralho().setCartasDoBolo(mesa.getBaralho().cartasEmDesuso());
					System.out.println("Cartas do Bolo: "+mesa.getBaralho().getCartasDoBolo().size());
					System.out.println("Cartas da Mesa: "+mesa.getBaralho().getCartasDaMesa().size());
					Carta inicial = mesa.getBaralho().getCartasDoBolo().peek();
					System.out.println("Descarte Inicial: "+inicial.toString());
					System.out.println("--------------------------------------------");	
					
					Carta descarte = mesa.getBaralho().getCartasDoBolo().pop();
					System.out.println("Cartas da Mesa: "+mesa.getBaralho().getCartasDaMesa().size());
					System.out.println("Descartando... "+mesa.getBaralho().cartaNaMesa(descarte));					

					int posicao = -1;
					boolean sair = false;
					boolean validador = false;
					while (sair == false) {
						System.out.println("--------------------------------------------");	
						System.out.println("Cartas do Bolo: "+mesa.getBaralho().getCartasDoBolo().size());
						System.out.println("Cartas da Mesa: "+mesa.getBaralho().getCartasDaMesa().size());
						System.out.println("--------------------------------------------");	
						mesa.startJogo(validador, descarte, posicao, sair);
					}
					
					for(Jogador jogador: mesa.getJogadores()){
						System.out.println(jogador.toStringJogador(descarte));
					}
	
				} break;
	
				case 2: {
						mesa.getView().viewEncerrarJogo();
						System.exit(0);
				} break;
	
				default: {
						mesa.getView().viewOpcaoInvalidaDefault();
				} break;
			}//switch
		}//while
	}
}
